/*
 * @Description: 
 * @Author: HKH
 * @Date: 2024-10-11 19:03:13
 * @LastEditors: HKH
 * @LastEditTime: 2024-10-11 19:03:29
 */
import javafx.scene.layout.Background;

/**
 * Customer
 */
public class Customer extends Thread {
  // 包子
  private BaoZi baoZi;
  private String name;

  // 构造器
  public Customer() {
  }

  // 全参构造器
  public Customer(BaoZi baoZi, String name) {
    this.baoZi = baoZi;
    this.name = name;
  }

  // 重写run方法
  @Override
  public void run() {
    for (int i = 1; i <= 100; i++) {
      // 同步
      synchronized (baoZi) {
        // 吃包子
        if (!baoZi.flag) {
          // 如果没有包子 要等一会儿
          try {
            baoZi.wait();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
        // 开始吃包子
        System.out.println(this.name + "第" + i + "次，吃包子。");
        baoZi.num--;
        System.out.println("消费完成，剩余包子数量：" + baoZi.num);
        // 消费完成 修改包子存在的标记
        baoZi.flag = false;
        // 通知生产者 生产包子
        baoZi.notify();
      }
    }
  }
}